package simple.array;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;

/**
 * @Desc <a href="https://leetcode.cn/problems/add-to-array-form-of-integer/">989. 数组形式的整数加法</a>
 * 整数的 数组形式  num 是按照从左到右的顺序表示其数字的数组。
 * 例如，对于 num = 1321 ，数组形式是 [1,3,2,1] 。
 * 给定 num ，整数的 数组形式 ，和整数 k ，返回 整数 num + k 的 数组形式 。
 * 示例 1：
 *   输入：num = [1,2,0,0], k = 34
 *   输出：[1,2,3,4]
 *   解释：1200 + 34 = 1234
 * 示例 2：
 *   输入：num = [2,7,4], k = 181
 *   输出：[4,5,5]
 *   解释：274 + 181 = 455
 * 示例 3：
 *   输入：num = [2,1,5], k = 806
 *   输出：[1,0,2,1]
 *   解释：215 + 806 = 1021
 * 提示：
 *   1 <= num.length <= 10^4
 *   0 <= num[i] <= 9
 *   num 不包含任何前导零，除了零本身
 *   1 <= k <= 10^4
 * @Date 2023/7/2 0:53
 * @Created by 刘学松
 */
public class 数组形式的整数加法 {
    public static void main(String[] args) {
        addToArrayForm(new int[]{2, 1, 5}, 806);
    }
    public static List<Integer> addToArrayForm(int[] num, int k) {
        List<Integer> list = new ArrayList<>();
        int length = num.length-1;
        while (k != 0 && length >= 0) {
            int val = num[length] + (k % 10);
            k /= 10;
            if (val >= 10) {
                ++k;
                val -= 10;
            }
            num[length] = val;
            --length;
        }
        while (k != 0) {
            list.add(0, k % 10);
            k /= 10;
        }
        for (int i : num) {
            list.add(i);
        }
        return list;
    }
}
